當 AI 已經能把文字唸出來,下一個問題是:它應該用誰的聲音說話?
對一般語音助理來說,清楚、自然的固定聲線通常已經足夠。但把場景放到高齡陪伴與智慧健康照護,我開始思考:經過授權的家人聲線,是否能讓互動多一點熟悉感?
這就是今天想探索的 Voice Cloning。
Voice Cloning,也就是聲音克隆,是透過參考錄音擷取說話者的聲音特徵,讓模型用相似的聲線產生新語音。它可以唸出原本錄音裡沒有的內容,而不是單純重播或拼接既有錄音。
在文字轉語音的應用中,Voice Cloning 仍然屬於 TTS 的一種方式。兩者最直觀的差別,是聲音從哪裡來:
固定聲線 TTS:
新的文字 → 預設聲線 → 語音
Voice Cloning:
參考錄音 + 新的文字 → 相似聲線的新語音
例如,同樣一句「今天過得怎麼樣?」,由系統預設聲音或熟悉的家人聲線說出來,可能帶來不同的感受。
不過,熟悉聲線是否適合長輩,仍需要實際了解使用意願。設計上也必須清楚告知這是 AI 合成語音,讓使用者知道自己正在與系統互動。因此,我會把 Voice Cloning 設計成可選擇的語音模式,與一般 TTS 並存。
要開始複製聲線,第一步是準備參考音訊。
錄音長度需要依模型要求決定。以 ElevenLabs 的 Instant Voice Cloning 為例,官方建議約一至兩分鐘的清晰錄音,並強調收音品質的重要性。
我的準備原則是:
錄音內容會以自然的日常句子為主,語速與情緒也盡量接近未來的使用情境。
模型選擇方面,我會優先比較中文自然度、聲線相似度、生成速度、費用,以及資料保存與刪除機制。ElevenLabs 是候選之一,其 Multilingual v2 與 Flash v2.5 都支援中文,但台灣口音、名字與中英混合句子的表現,仍需要另外測試。
前面探索本機 Voice Cloning 時,我已經感受到部署上的難度。考量目前的開發階段,我會先採用兩條語音輸出路徑:
一般對話
→ 本機 Kokoro
→ 以低延遲為目標
需要熟悉聲線的情境
→ 外部 Voice Cloning API
→ 確認授權後使用
本機方案方便掌握執行環境;外部 API 則能減少部署工作,但會增加網路依賴與使用成本。這些差異都需要放進整體設計,而速度快慢仍要靠實測確認。
第一版 Demo 會先收斂成一個最小流程:
準備已授權的參考錄音
↓
建立可用聲線
↓
輸入新文字
↓
呼叫語音合成
↓
取得音檔並播放
介面只需要文字輸入框、生成按鈕與播放器。若 API 使用聲線 ID,就先建立聲線,後續透過 ID 產生語音,不必每次重新上傳錄音。
品質評估則分成兩件事:唸得自然,以及聽起來像。
自然度要檢查發音、停頓、語速與句尾語調;相似度則請聲音本人和熟悉他的人協助聆聽。測試內容會包含問候、日期、數字與中英混合句子,避免只用一句簡單短句判斷效果。
效能方面,我會記錄完整音檔取得時間、開始播放前的等待時間,以及 RTF:
RTF = 生成耗時 ÷ 生成音訊長度
例如,花兩秒產生十秒音訊,RTF 就是 0.2。這是計算示例,實際數值仍待 Demo 完成後測量。
比較 Kokoro 與 Voice Cloning API 時,會使用相同文字、重複測試,並分開記錄首次執行與暖機後的結果。API 測量若包含網路傳輸,也會清楚標示,避免把不同條件的數字直接相比。
最後,聲音授權是整個流程的必要條件。我會先取得聲音本人的明確同意,說明用途、使用範圍及第三方服務的資料處理方式,並確認平台規範。錄音與聲線的存取權限也需要管理,讓本人可以提出停止使用與刪除的要求。
目前最大的挑戰,是本機部署難度,以及品質與速度仍缺少實測資料。下一步會先完成這個最小 Demo,再把 STT → LLM → TTS 串起來,讓系統能聽懂一句話、產生回應,最後用使用者選擇的聲音說出來。